#pragma once
#include "Event.h"


namespace Hazel
{
	class WindowReszieEvent : public Event
	{
		private:
			using u_int = unsigned int;
			u_int m_Width, m_Height;
		public:
			WindowReszieEvent(u_int width, u_int height) : m_Width(width), m_Height(height) {}
			u_int GetWidth() const { return m_Width; }
			u_int GetWidth() const { return m_Height; }
			std::string ToString() const override
			{
				std::stringstream ss;
				ss << "WindowResizeEvent" << m_Width << m_Height;
				return ss.str();
			}

			EVENT_CLASS_TYPE(WindowResize)
			EVENT_CLASS_CATEGORY(EventCategoryApplication)

	};

	class WindowCloseEvent : public Event
	{
		public:
			WindowCloseEvent() = default;
			EVENT_CLASS_TYPE(WindowClose)
			EVENT_CLASS_CATEGORY(EventCategoryApplication)
	};

	class AppTickEvent : public Event
	{
		public:
			AppTickEvent() = default;
			EVENT_CLASS_TYPE(AppTick)
			EVENT_CLASS_CATEGORY(EventCategoryApplication)
	};

	class AppUpdateEvent : public Event
	{
		public:
			AppUpdateEvent() = default;
			EVENT_CLASS_TYPE(AppUpdate)
			EVENT_CLASS_CATEGORY(EventCategoryApplication)
	};

	class AppRenderEvent : public Event
	{
		public:
			AppRenderEvent() = default;
			EVENT_CLASS_TYPE(AppRender)
			EVENT_CLASS_CATEGORY(EventCategoryApplication)
	};
}


